package com.itheima.HoneWork.homework01;

public class TicketSellingExample {
    public static void main(String[] args) {
        // 创建三个售票窗口线程
        TicketThread window1 = new TicketThread("窗口1");
        TicketThread window2 = new TicketThread("窗口2");
        TicketThread window3 = new TicketThread("窗口3");

        // 启动线程
        window1.start();
        window2.start();
        window3.start();
    }
}

class TicketThread extends Thread {
    // 共享的总票数，设置为静态变量，保证所有线程共享这一数据
    private static int totalTickets = 100;

    public TicketThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        while (true) {
            // 调用同步方法进行售票操作
            if (!sellTicket()) {
                break;
            }
            try {
                // 模拟售票操作耗时，让线程暂停一下，这里暂停时间可以根据实际情况调整
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    // 定义同步方法，使用 synchronized 关键字修饰方法，确保同一时刻只有一个线程能访问该方法
    private synchronized boolean sellTicket() {
        if (totalTickets <= 0) {
            System.out.println(getName() + " 售票结束，票已售罄。");
            return false;
        }
        totalTickets--;
        System.out.println(getName() + " 正在售票，剩余票数：" + totalTickets);
        return true;
    }
}